《Linux运维总结:Centos7.6之OpenSSH7.4升级版本至9.4》

您所在的位置:网站首页 Linux openssh 升级 《Linux运维总结:Centos7.6之OpenSSH7.4升级版本至9.4》

《Linux运维总结:Centos7.6之OpenSSH7.4升级版本至9.4》

2024-06-10 09:12| 来源: 网络整理| 查看: 265

一、环境信息

操作系统:Centos7.6.1810 OpenSSH_7.4p1, OpenSSL 1.0.2k-fips

如下图所示: 在这里插入图片描述

注意:升级后由于加密算法的区别,低版本的SSH工具可能无法连接,建议改用Xshell7或SecureCRT9.0以上版本。

二、注意事项

1、检查防火墙或selinux是否关闭。 2、建议安装telnet,防止ssh安装失败无法连接。 3、新前一定要多开1个或1个以上ssh终端,一旦更新失败当前shell终端是无法操作的,也就无法进行版本回退。 4、升级前一定要对ssh进行备份,避免更新失败时能回滚。 5、升级前一定要提前在测试环境验证,运行一段时间,确认没有问题才可在生产环境进行更新操作。 6、对于生产环境主机数量比较多时,建议先在1台或几台服务器上更新,运行一段时间,确认没有问题再执行批量更新操作。

总结:对于以上需要注意的内容,建议大家务必重视,小心谨慎总没错的。

三、升级步骤

OpenSSH9.4源码包资源合集

3.1、安装telnet

注意:安装telnet,防止ssh安装失败无法连接。

1、安装Telnet

注意:一般Linux系统自带Telnet客户端,我们只需要安装服务端即可;另外Telnet运行需要依靠xinetd组件,安装命令如下所示:

yum install telnet-server.x86_64 xinetd.x86_64 -y

2、运行telnet服务

systemctl enable telnet.socket systemctl start telnet.socket systemctl start xinetd systemctl status telnet.socket

3、移除文件

注意:Linux系统中默认不允许root账户telnet远程登录,这里需要移除配置文件,保证root账户能够远程登录。

mv /etc/securetty /etc/securetty.bak

4、使用telnet协议连接服务器,如下图所示: 在这里插入图片描述

3.1、准备工作

1、安装依赖

yum install -y gcc gcc-c++ perl perl-IPC-Cmd pam pam-devel

2、下载tar包并解压

cd /usr/local/src wget https://www.openssl.org/source/openssl-3.1.0.tar.gz --no-check-certificate wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-9.4p1.tar.gz wget http://www.zlib.net/zlib-1.2.13.tar.gz tar axf openssh-9.4p1.tar.gz && tar axf openssl-3.1.0.tar.gz && tar axf zlib-1.2.13.tar.gz 3.2、备份文件

1、备份openssl

mv /usr/bin/openssl /usr/bin/openssl.old

2、备份openssh

mv /etc/ssh /etc/ssh.bak mkdir /usr/bin/bak \cp -arpf /usr/bin/{cp,sftp,ssh,ssh-add,ssh-agent,ssh-keygen,ssh-keyscan} /usr/bin/bak/ \cp -arpf /usr/sbin/sshd /usr/sbin/sshd.bak \cp -arpf /etc/sysconfig/sshd /etc/sysconfig/sshd.bak \cp -arpf /etc/pam.d/sshd /etc/pam.d/sshd.bak

说明:如果cp、sftp、ssh、ssh-add、ssh-agent、ssh-keygen、ssh-keyscan等二进制文件是软连接,这里就不需要备份,请直接删除这些软连接,后续如果还原的时候请从这些文件的源路径里拷贝即可。当前环境不是软连接,所以对这些二进制文件进行备份。

如下图所示: 在这里插入图片描述

3.3、编译安装zlib cd zlib-1.2.13 ./configure --prefix=/usr/local/zlib-1.2.13 && make -j 4 && make install 3.4、编译安装openssl

1、编译安装

cd openssl-3.1.0 ./config --prefix=/usr/local/openssl-3.1.0 && make -j 4 && make install

2、编辑ld.so.conf文件

echo '/usr/local/openssl-3.1.0/lib64' >> /etc/ld.so.conf ldconfig && ldconfig -v

3、创建操作系统软链接

ln -s /usr/local/openssl-3.1.0/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl-3.1.0/include/openssl /usr/include/openssl ll -s /usr/bin/openssl ll -s /usr/include/openssl

4、检查Openssl版本

openssl version OpenSSL 3.1.0 14 Mar 2023 (Library: OpenSSL 3.1.0 14 Mar 2023) 3.5、编译安装openssh

1、编译安装 注意:在configure openssh时,可以去掉–with-pam编译参数。

cd openssh-9.4p1 ./configure --prefix=/usr/local/openssh-9.4p1 --sysconfdir=/etc/ssh --with-pam \ --with-ssl-dir=/usr/local/openssl-3.1.0 --with-zlib=/usr/local/zlib-1.2.13 --without-hardening make && make install #或者 cd openssh-9.4p1 ./configure --prefix=/usr/local/openssh-9.4p1 --sysconfdir=/etc/ssh \ --with-ssl-dir=/usr/local/openssl-3.1.0 --with-zlib=/usr/local/zlib-1.2.13 --without-hardening make && make install

2、替换新版本openssh相关命令

\cp -arpf /usr/local/openssh-9.4p1/bin/scp /usr/bin/ \cp -arpf /usr/local/openssh-9.4p1/bin/sftp /usr/bin/ \cp -arpf /usr/local/openssh-9.4p1/bin/ssh /usr/bin/ \cp -arpf /usr/local/openssh-9.4p1/bin/ssh-add /usr/bin/ \cp -arpf /usr/local/openssh-9.4p1/bin/ssh-agent /usr/bin/ \cp -arpf /usr/local/openssh-9.4p1/bin/ssh-keygen /usr/bin/ \cp -arpf /usr/local/openssh-9.4p1/bin/ssh-keyscan /usr/bin/ \cp -arpf /usr/local/openssh-9.4p1/sbin/sshd /usr/sbin/sshd

3、拷贝启动脚本

\cp -a contrib/redhat/sshd.init /etc/init.d/sshd \cp -a contrib/redhat/sshd.pam /etc/pam.d/sshd.pam chmod +x /etc/init.d/sshd mv /usr/lib/systemd/system/sshd.service /usr/lib/systemd/system/sshd.service.bak

5、修改配置文件

vi /etc/ssh/sshd_config PermitRootLogin yes PasswordAuthentication yes UsePAM no UseDNS no

6、设置开机启动,并验证版本

systemctl daemon-reload systemctl enable sshd.socket sshd -t systemctl restart sshd ssh -V OpenSSH_9.4p1, OpenSSL 3.1.0 14 Mar 2023

注意:在configure openssh时,有设置参数 –with-pam,在此之后登录服务器时,会发生登陆失败的问题。

解决方法一如下:

vi /etc/ssh/sshd_config UsePAM no

解决方法二如下:

# 备份原文件/etc/pam.d/sshd,将以下内容覆盖写入/etc/pam.d/sshd vim /etc/pam.d/sshd #%PAM-1.0 auth substack password-auth auth include postlogin account required pam_sepermit.so account required pam_nologin.so account include password-auth password include password-auth # pam_selinux.so close should be the first session rule session required pam_selinux.so close session required pam_loginuid.so # pam_selinux.so open should only be followed by sessions to be executed in the user context session required pam_selinux.so open env_params session required pam_namespace.so session optional pam_keyinit.so force revoke session optional pam_motd.so session include password-auth session include postlogin 六、版本回退

回滚前:

[root@localhost ~]# ssh -V OpenSSH_9.4p1, OpenSSL 3.1.0 14 Mar 2023

回滚操作:

1、回滚openssl

rm -f /usr/bin/openssl mv /usr/bin/openssl.old /usr/bin/openssl openssl version OpenSSL 1.0.2k-fips 26 Jan 2017

2、回滚openssh

2.1、恢复/etc/ssh目录

rm -rf /etc/ssh mv /etc/ssh.bak /etc/ssh

2.2、恢复cp、sftp、ssh、ssh-add、ssh-agent、ssh-keygen、ssh-keyscan命令

\cp -arpf /usr/bin/bak/cp /usr/bin/cp \cp -arpf /usr/bin/bak/sftp /usr/bin/sftp \cp -arpf /usr/bin/bak/ssh /usr/bin/ssh \cp -arpf /usr/bin/bak/ssh-add /usr/bin/ssh-add \cp -arpf /usr/bin/bak/ssh-agent /usr/bin/ssh-agent \cp -arpf /usr/bin/bak/ssh-keygen /usr/bin/ssh-keygen \cp -arpf /usr/bin/bak/ssh-keyscan /usr/bin/ssh-keyscan rm -rf /usr/bin/bak

2.3、恢复sshd命令

\mv /usr/sbin/sshd.bak /usr/sbin/sshd \mv /etc/sysconfig/sshd.bak /etc/sysconfig/sshd

2.4、重启sshd服务

systemctl daemon-reload systemctl restart sshd

回滚后:

[root@localhost ~]# ssh -V OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017 总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:Linux运维实战总结



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3